{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import cv2\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "import Levenshtein\n",
    "import gc\n",
    "from numba import njit\n",
    "from sklearn.model_selection import train_test_split\n",
    "from tensorflow.keras.layers.experimental.preprocessing import StringLookup\n",
    "import datetime\n",
    "from PIL import Image\n",
    "# import cProfile"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "50145\n"
     ]
    }
   ],
   "source": [
    "#load images from Total Images folder\n",
    "def load_images_from_folder(folder):\n",
    "    images = []\n",
    "    for filename in os.listdir(folder):\n",
    "        img = cv2.imread(os.path.join(folder,filename))\n",
    "        if img is not None:\n",
    "            images.append(img)\n",
    "    return images\n",
    "\n",
    "images = load_images_from_folder(r'New Total Images')\n",
    "\n",
    "print(len(images))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# resize images to 32x32\n",
    "resized_images = []\n",
    "for img in images:\n",
    "    img = cv2.resize(img, (64, 64))\n",
    "    resized_images.append(img)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "#load labels from Total GT folder\n",
    "def load_labels_from_folder(folder):\n",
    "    labels = []\n",
    "    for filename in os.listdir(folder):\n",
    "        #read inside txt files\n",
    "        with open(os.path.join(folder,filename), 'r', encoding='utf-8') as f:\n",
    "            label = f.read()\n",
    "        labels.append(label)\n",
    "    return labels\n",
    "\n",
    "labels = load_labels_from_folder(r'New Total GT')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## DEALING WITH LABELS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def clean_labels(labels):\n",
    "    cleaned_labels = []\n",
    "    for label in labels:\n",
    "        label = label.split(\" \")[-1].strip()\n",
    "        cleaned_labels.append(label)\n",
    "    return cleaned_labels\n",
    "\n",
    "labels_cleaned = clean_labels(labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# select only the images with labels cleaned\n",
    "resized_images = [img for img, label in zip(resized_images, labels_cleaned) if label]\n",
    "labels = [label for label in labels_cleaned if label]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# max_len = 0\n",
    "# characters = set()\n",
    "# for label in labels:\n",
    "#     label = label.split(\" \")[-1].strip()\n",
    "#     for char in label:\n",
    "#         characters.add(char)\n",
    "\n",
    "#     max_len = max(max_len, len(label))\n",
    "\n",
    "# print(\"Maximum length: \", max_len)\n",
    "# print(\"Vocab size: \", len(characters))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "AUTOTUNE = tf.data.AUTOTUNE\n",
    "\n",
    "characters = {'ء','آ','أ','ؤ','إ','ئ','ا','ب','ة','ت','ث','ج','ح','خ','د','ذ','ر','ز','س','ش','ص','ض','ط','ظ','ع','غ','ف','ق','ك','ل','م','ن','ه','و','ى','ي'}\n",
    "max_len = 7\n",
    "# Mapping characters to integers.\n",
    "char_to_num = StringLookup(vocabulary=sorted(list(characters)), mask_token=None)\n",
    "\n",
    "# Mapping integers back to original characters.\n",
    "num_to_char = StringLookup(\n",
    "    vocabulary=char_to_num.get_vocabulary(), mask_token=None, invert=True\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "36\n"
     ]
    }
   ],
   "source": [
    "print(len(characters))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'ء',\n",
       " 'آ',\n",
       " 'أ',\n",
       " 'ؤ',\n",
       " 'إ',\n",
       " 'ئ',\n",
       " 'ا',\n",
       " 'ب',\n",
       " 'ة',\n",
       " 'ت',\n",
       " 'ث',\n",
       " 'ج',\n",
       " 'ح',\n",
       " 'خ',\n",
       " 'د',\n",
       " 'ذ',\n",
       " 'ر',\n",
       " 'ز',\n",
       " 'س',\n",
       " 'ش',\n",
       " 'ص',\n",
       " 'ض',\n",
       " 'ط',\n",
       " 'ظ',\n",
       " 'ع',\n",
       " 'غ',\n",
       " 'ف',\n",
       " 'ق',\n",
       " 'ك',\n",
       " 'ل',\n",
       " 'م',\n",
       " 'ن',\n",
       " 'ه',\n",
       " 'و',\n",
       " 'ى',\n",
       " 'ي'}"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "characters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# AUTOTUNE = tf.data.AUTOTUNE\n",
    "\n",
    "# # Mapping characters to integers.\n",
    "# char_to_num = StringLookup(vocabulary=sorted(list(characters)), mask_token=None)\n",
    "\n",
    "# # Mapping integers back to original characters.\n",
    "# num_to_char = StringLookup(\n",
    "#     vocabulary=char_to_num.get_vocabulary(), mask_token=None, invert=True\n",
    "# )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "padding_token = 99"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Faster Vectorization (40s --> 0.8s)\n",
    "def vectorize_label(label):\n",
    "    # print(label)\n",
    "    label = char_to_num(tf.strings.unicode_split(label, input_encoding=\"UTF-8\"))\n",
    "    length = tf.shape(label)[0]\n",
    "    pad_amount = max_len - length\n",
    "    label = tf.pad(label, paddings=[[0, pad_amount]], constant_values=padding_token)\n",
    "    return label\n",
    "\n",
    "labels_v = tf.data.Dataset.from_tensor_slices(labels) # Convert labels to a dataset\n",
    "labels_v = labels_v.map(vectorize_label, num_parallel_calls=tf.data.AUTOTUNE) # Vectorize labels\n",
    "labels_v = list(labels_v.as_numpy_iterator()) # Convert labels back to a list\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Faster Devectorization (10s --> 0.3s)\n",
    "@njit(cache=True)\n",
    "def devectorize_label(label, vocabulary, padding_token):\n",
    "    # Remove padding tokens\n",
    "    label = label[label != padding_token]\n",
    "    \n",
    "    # Convert label indices back to characters\n",
    "    characters = [vocabulary[idx] for idx in label]\n",
    "    \n",
    "    # Concatenate characters to form the original text\n",
    "    original_text = ''.join(characters)\n",
    "    \n",
    "    return original_text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "vocab_num = np.array(char_to_num.get_vocabulary())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['[UNK]', 'ء', 'آ', 'أ', 'ؤ', 'إ', 'ئ', 'ا', 'ب', 'ة', 'ت', 'ث',\n",
       "       'ج', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'س', 'ش', 'ص', 'ض', 'ط', 'ظ',\n",
       "       'ع', 'غ', 'ف', 'ق', 'ك', 'ل', 'م', 'ن', 'ه', 'و', 'ى', 'ي'],\n",
       "      dtype='<U5')"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vocab_num"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "99"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "padding_token"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "labels_de_v = [devectorize_label(label, vocab_num, padding_token) for label in labels_v]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## END"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#show first 10 images using plt with their repective decoded labels\n",
    "for i in range(10):\n",
    "    plt.subplot(2, 5, i+1)\n",
    "    plt.imshow(resized_images[i], cmap='gray')\n",
    "    plt.title(labels_de_v[i])\n",
    "    plt.axis('off')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "length of labels:  50145\n",
      "length of images 50145\n"
     ]
    }
   ],
   "source": [
    "print(\"length of labels: \",len(labels_de_v))\n",
    "print(\"length of images\",len(resized_images))\n",
    "# if not equal, error\n",
    "assert len(labels_de_v) == len(resized_images), \"The number of labels does not match the number of images, check the loading process\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(50145, 64, 64, 3)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# reshape data\n",
    "resized_images = np.array(resized_images)\n",
    "resized_images.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Normalize data\n",
    "resized_images = resized_images / 255.0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "#create a train test split of 80:20\n",
    "X_train, X_test, y_train, y_test = train_test_split(resized_images, labels_v, test_size=0.2, random_state=42, stratify=labels_v)\n",
    "X_val, X_test, y_val, y_test = train_test_split(X_test, y_test, test_size=0.5, random_state=42, stratify=y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train = np.array(y_train)\n",
    "y_test = np.array(y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## LOSS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "import keras\n",
    "class CTCLayer(keras.layers.Layer):\n",
    "    def __init__(self, name=None, **kwargs):\n",
    "        super().__init__(name=name, **kwargs)\n",
    "        self.loss_fn = keras.backend.ctc_batch_cost\n",
    "\n",
    "    def call(self, y_true, y_pred):\n",
    "        batch_len = tf.cast(tf.shape(y_true)[0], dtype=\"int64\")\n",
    "        input_length = tf.cast(tf.shape(y_pred)[1], dtype=\"int64\")\n",
    "        label_length = tf.cast(tf.shape(y_true)[1], dtype=\"int64\")\n",
    "\n",
    "        input_length = input_length * tf.ones(shape=(batch_len, 1), dtype=\"int64\")\n",
    "        label_length = label_length * tf.ones(shape=(batch_len, 1), dtype=\"int64\")\n",
    "        loss = self.loss_fn(y_true, y_pred, input_length, label_length)\n",
    "        self.add_loss(loss)\n",
    "\n",
    "        # At test time, just return the computed predictions.\n",
    "        return y_pred\n",
    "\n",
    "    def get_config(self):\n",
    "        config = super().get_config()\n",
    "        return config\n",
    "\n",
    "    @classmethod\n",
    "    def from_config(cls, config):\n",
    "        return cls(**config)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "def decode_batch_predictions(pred):\n",
    "    input_len = np.ones(pred.shape[0]) * pred.shape[1]\n",
    "    # Use greedy search. For complex tasks, you can use beam search.\n",
    "    results = keras.backend.ctc_decode(pred, input_length=input_len, greedy=True)[0][0][\n",
    "        :, :max_len\n",
    "    ]\n",
    "    # Iterate over the results and get back the text.\n",
    "    output_text = []\n",
    "    for res in results:\n",
    "        res = tf.gather(res, tf.where(tf.math.not_equal(res, -1)))\n",
    "        res = tf.strings.reduce_join(num_to_char(res)).numpy().decode(\"utf-8\")\n",
    "        output_text.append(res)\n",
    "    return output_text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tensorflow.keras.callbacks import Callback\n",
    "# Custom callback for calculating CER after each epoch\n",
    "class CalculateCER(Callback):\n",
    "    def __init__(self, validation_images, validation_labels):\n",
    "        super(CalculateCER, self).__init__()\n",
    "        self.validation_images = validation_images\n",
    "        self.validation_labels = validation_labels\n",
    "        self.cer_history = []\n",
    "\n",
    "    def on_epoch_end(self, epoch, logs=None):\n",
    "        y_true = self.validation_labels  # True labels\n",
    "        y_pred = self.model.predict([self.validation_images, np.zeros_like(self.validation_labels)])  # Predicted labels\n",
    "        y_true_text = [devectorize_label(label,vocab_num, padding_token) for label in y_true]\n",
    "        y_pred_text = decode_batch_predictions(y_pred)\n",
    "        # print(f'Predicted text: {y_pred_text}')\n",
    "        # print(f'True text: {y_true_text}')\n",
    "        cer = self.calculate_cer(y_true_text, y_pred_text)\n",
    "        self.cer_history.append(cer)\n",
    "        print(f'\\nCharacter Error Rate (CER) after epoch {epoch + 1}: {cer}')\n",
    "\n",
    "    def calculate_cer(self, y_true, y_pred):\n",
    "        total_distance = 0\n",
    "        total_true_char = 0\n",
    "        for true_seq, pred_seq in zip(y_true, y_pred):\n",
    "            true_seq = true_seq.rstrip('\\n')\n",
    "            pred_seq = pred_seq.rstrip('\\n')\n",
    "            total_distance += Levenshtein.distance(true_seq, pred_seq)\n",
    "            total_true_char += len(true_seq)\n",
    "        cer = total_distance / total_true_char\n",
    "        return cer\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "22368"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# remove not needed images variable from memory and garbage collect\n",
    "del images\n",
    "gc.collect()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Pre-Trained ResNet50V2 Alphabetical"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "#load model\n",
    "model = keras.models.load_model(\"Alphabet_Res50V2AdCos_with_CTC.h5\", custom_objects={\"CTCLayer\": CTCLayer})\n",
    "model.compile(optimizer=keras.optimizers.Adam(learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-07))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "# # learning rate scheduler\n",
    "# from tensorflow.keras.callbacks import ReduceLROnPlateau\n",
    "# lr_scheduler = ReduceLROnPlateau(monitor='val_loss', factor=0.2, patience=5, min_lr=0.00001)\n",
    "\n",
    "cer = CalculateCER(X_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define the learning rate scheduler\n",
    "total_epochs = 70\n",
    "def cosine_decay(epoch, lr):\n",
    "    max_lr = 0.001  # Maximum learning rate\n",
    "    min_lr = 0.00001  # Minimum learning rate\n",
    "    step_size = total_epochs // 2  # Number of epochs for half of the cosine cycle\n",
    "    decayed_lr = min_lr + 0.5 * (max_lr - min_lr) * (1 + tf.math.cos((epoch % step_size) / step_size * 3.1415))\n",
    "    return decayed_lr\n",
    "\n",
    "lr_scheduler = keras.callbacks.LearningRateScheduler(cosine_decay)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Mixed precision compatibility check (mixed_float16): OK\n",
      "Your GPU will likely run quickly with dtype policy mixed_float16 as it has compute capability of at least 7.0. Your GPU: NVIDIA GeForce RTX 3060, compute capability 8.6\n"
     ]
    }
   ],
   "source": [
    "from tensorflow.keras import mixed_precision\n",
    "policy = mixed_precision.Policy('mixed_float16')\n",
    "mixed_precision.set_global_policy(policy)\n",
    "\n",
    "# set Random seed\n",
    "tf.random.set_seed(42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/70\n",
      "157/157 [==============================] - 4s 18ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 1: 0.32593911917098445\n",
      "314/314 [==============================] - 78s 217ms/step - loss: 7.8620 - val_loss: 2.9061 - lr: 1.0000e-03\n",
      "Epoch 2/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 2: 0.16215997409326424\n",
      "314/314 [==============================] - 65s 206ms/step - loss: 1.9686 - val_loss: 1.3858 - lr: 9.9801e-04\n",
      "Epoch 3/70\n",
      "157/157 [==============================] - 3s 20ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 3: 0.11188471502590673\n",
      "314/314 [==============================] - 65s 205ms/step - loss: 0.9989 - val_loss: 0.9503 - lr: 9.9205e-04\n",
      "Epoch 4/70\n",
      "157/157 [==============================] - 3s 20ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 4: 0.08516839378238342\n",
      "314/314 [==============================] - 65s 206ms/step - loss: 0.6236 - val_loss: 0.7148 - lr: 9.8216e-04\n",
      "Epoch 5/70\n",
      "157/157 [==============================] - 3s 20ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 5: 0.07456282383419689\n",
      "314/314 [==============================] - 65s 208ms/step - loss: 0.4426 - val_loss: 0.6371 - lr: 9.6844e-04\n",
      "Epoch 6/70\n",
      "157/157 [==============================] - 3s 20ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 6: 0.0743199481865285\n",
      "314/314 [==============================] - 63s 201ms/step - loss: 0.3633 - val_loss: 0.6465 - lr: 9.5098e-04\n",
      "Epoch 7/70\n",
      "157/157 [==============================] - 3s 20ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 7: 0.06986722797927461\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.2707 - val_loss: 0.6547 - lr: 9.2994e-04\n",
      "Epoch 8/70\n",
      "157/157 [==============================] - 3s 19ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 8: 0.06330958549222798\n",
      "314/314 [==============================] - 63s 201ms/step - loss: 0.2306 - val_loss: 0.5743 - lr: 9.0547e-04\n",
      "Epoch 9/70\n",
      "157/157 [==============================] - 3s 20ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 9: 0.06063795336787565\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.2135 - val_loss: 0.5504 - lr: 8.7778e-04\n",
      "Epoch 10/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 10: 0.05043717616580311\n",
      "314/314 [==============================] - 64s 203ms/step - loss: 0.1645 - val_loss: 0.5138 - lr: 8.4708e-04\n",
      "Epoch 11/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 11: 0.0665479274611399\n",
      "314/314 [==============================] - 68s 216ms/step - loss: 0.1387 - val_loss: 0.6627 - lr: 8.1364e-04\n",
      "Epoch 12/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 12: 0.04930375647668394\n",
      "314/314 [==============================] - 64s 204ms/step - loss: 0.1212 - val_loss: 0.5161 - lr: 7.7771e-04\n",
      "Epoch 13/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 13: 0.04485103626943005\n",
      "314/314 [==============================] - 64s 204ms/step - loss: 0.0952 - val_loss: 0.4899 - lr: 7.3958e-04\n",
      "Epoch 14/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 14: 0.04452720207253886\n",
      "314/314 [==============================] - 64s 203ms/step - loss: 0.0763 - val_loss: 0.4610 - lr: 6.9956e-04\n",
      "Epoch 15/70\n",
      "157/157 [==============================] - 3s 18ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 15: 0.0430699481865285\n",
      "314/314 [==============================] - 64s 204ms/step - loss: 0.0653 - val_loss: 0.4523 - lr: 6.5798e-04\n",
      "Epoch 16/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 16: 0.046227331606217614\n",
      "314/314 [==============================] - 64s 203ms/step - loss: 0.0702 - val_loss: 0.5016 - lr: 6.1517e-04\n",
      "Epoch 17/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 17: 0.047117875647668395\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0531 - val_loss: 0.5298 - lr: 5.7147e-04\n",
      "Epoch 18/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 18: 0.04574158031088083\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0743 - val_loss: 0.5289 - lr: 5.2723e-04\n",
      "Epoch 19/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 19: 0.04088406735751295\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0412 - val_loss: 0.4337 - lr: 4.8282e-04\n",
      "Epoch 20/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 20: 0.038860103626943004\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0273 - val_loss: 0.4109 - lr: 4.3858e-04\n",
      "Epoch 21/70\n",
      "157/157 [==============================] - 3s 18ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 21: 0.035783678756476686\n",
      "314/314 [==============================] - 65s 205ms/step - loss: 0.0209 - val_loss: 0.4308 - lr: 3.9488e-04\n",
      "Epoch 22/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 22: 0.03367875647668394\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0162 - val_loss: 0.4149 - lr: 3.5206e-04\n",
      "Epoch 23/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 23: 0.035864637305699484\n",
      "314/314 [==============================] - 63s 201ms/step - loss: 0.0154 - val_loss: 0.4296 - lr: 3.1048e-04\n",
      "Epoch 24/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 24: 0.034407383419689117\n",
      "314/314 [==============================] - 63s 201ms/step - loss: 0.0117 - val_loss: 0.4153 - lr: 2.7046e-04\n",
      "Epoch 25/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 25: 0.03424546632124352\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0100 - val_loss: 0.4348 - lr: 2.3233e-04\n",
      "Epoch 26/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 26: 0.033921632124352334\n",
      "314/314 [==============================] - 63s 201ms/step - loss: 0.0088 - val_loss: 0.4240 - lr: 1.9640e-04\n",
      "Epoch 27/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 27: 0.03238341968911917\n",
      "314/314 [==============================] - 63s 201ms/step - loss: 0.0079 - val_loss: 0.4347 - lr: 1.6295e-04\n",
      "Epoch 28/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 28: 0.03359779792746114\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0066 - val_loss: 0.4216 - lr: 1.3225e-04\n",
      "Epoch 29/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 29: 0.03205958549222798\n",
      "314/314 [==============================] - 63s 201ms/step - loss: 0.0050 - val_loss: 0.4309 - lr: 1.0456e-04\n",
      "Epoch 30/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 30: 0.03278821243523316\n",
      "314/314 [==============================] - 63s 201ms/step - loss: 0.0039 - val_loss: 0.4279 - lr: 8.0087e-05\n",
      "Epoch 31/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 31: 0.03238341968911917\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0035 - val_loss: 0.4299 - lr: 5.9037e-05\n",
      "Epoch 32/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 32: 0.03125\n",
      "314/314 [==============================] - 63s 201ms/step - loss: 0.0032 - val_loss: 0.4241 - lr: 4.1578e-05\n",
      "Epoch 33/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 33: 0.031492875647668395\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0025 - val_loss: 0.4310 - lr: 2.7850e-05\n",
      "Epoch 34/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 34: 0.03157383419689119\n",
      "314/314 [==============================] - 63s 201ms/step - loss: 0.0023 - val_loss: 0.4322 - lr: 1.7963e-05\n",
      "Epoch 35/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 35: 0.031088082901554404\n",
      "314/314 [==============================] - 63s 201ms/step - loss: 0.0022 - val_loss: 0.4321 - lr: 1.1997e-05\n",
      "Epoch 36/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 36: 0.07610103626943006\n",
      "314/314 [==============================] - 63s 201ms/step - loss: 0.6698 - val_loss: 0.7245 - lr: 1.0000e-03\n",
      "Epoch 37/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 37: 0.051489637305699484\n",
      "314/314 [==============================] - 63s 201ms/step - loss: 0.2126 - val_loss: 0.4829 - lr: 9.9801e-04\n",
      "Epoch 38/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 38: 0.04339378238341969\n",
      "314/314 [==============================] - 63s 201ms/step - loss: 0.1168 - val_loss: 0.4292 - lr: 9.9205e-04\n",
      "Epoch 39/70\n",
      "157/157 [==============================] - 3s 18ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 39: 0.04744170984455959\n",
      "314/314 [==============================] - 65s 207ms/step - loss: 0.0727 - val_loss: 0.5024 - lr: 9.8216e-04\n",
      "Epoch 40/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 40: 0.050113341968911915\n",
      "314/314 [==============================] - 64s 203ms/step - loss: 0.0972 - val_loss: 0.5340 - lr: 9.6844e-04\n",
      "Epoch 41/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 41: 0.04023639896373057\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0753 - val_loss: 0.4383 - lr: 9.5098e-04\n",
      "Epoch 42/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 42: 0.04258419689119171\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0618 - val_loss: 0.4456 - lr: 9.2994e-04\n",
      "Epoch 43/70\n",
      "157/157 [==============================] - 3s 18ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 43: 0.04938471502590674\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0904 - val_loss: 0.5489 - lr: 9.0547e-04\n",
      "Epoch 44/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 44: 0.04995142487046632\n",
      "314/314 [==============================] - 64s 203ms/step - loss: 0.0568 - val_loss: 0.5720 - lr: 8.7778e-04\n",
      "Epoch 45/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 45: 0.03756476683937824\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0427 - val_loss: 0.4433 - lr: 8.4708e-04\n",
      "Epoch 46/70\n",
      "157/157 [==============================] - 3s 18ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 46: 0.052461139896373056\n",
      "314/314 [==============================] - 64s 203ms/step - loss: 0.0601 - val_loss: 0.6460 - lr: 8.1364e-04\n",
      "Epoch 47/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 47: 0.03481217616580311\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0352 - val_loss: 0.3963 - lr: 7.7771e-04\n",
      "Epoch 48/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 48: 0.031088082901554404\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0208 - val_loss: 0.3607 - lr: 7.3958e-04\n",
      "Epoch 49/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 49: 0.03400259067357513\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0220 - val_loss: 0.4331 - lr: 6.9956e-04\n",
      "Epoch 50/70\n",
      "157/157 [==============================] - 3s 18ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 50: 0.03408354922279793\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0238 - val_loss: 0.4030 - lr: 6.5798e-04\n",
      "Epoch 51/70\n",
      "157/157 [==============================] - 3s 20ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 51: 0.041693652849740935\n",
      "314/314 [==============================] - 64s 203ms/step - loss: 0.0306 - val_loss: 0.5233 - lr: 6.1517e-04\n",
      "Epoch 52/70\n",
      "157/157 [==============================] - 3s 20ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 52: 0.03869818652849741\n",
      "314/314 [==============================] - 64s 204ms/step - loss: 0.0396 - val_loss: 0.4764 - lr: 5.7147e-04\n",
      "Epoch 53/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 53: 0.031169041450777202\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0203 - val_loss: 0.4117 - lr: 5.2723e-04\n",
      "Epoch 54/70\n",
      "157/157 [==============================] - 3s 20ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 54: 0.030278497409326425\n",
      "314/314 [==============================] - 64s 204ms/step - loss: 0.0153 - val_loss: 0.4031 - lr: 4.8282e-04\n",
      "Epoch 55/70\n",
      "157/157 [==============================] - 3s 19ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 55: 0.029549870466321244\n",
      "314/314 [==============================] - 64s 204ms/step - loss: 0.0093 - val_loss: 0.4036 - lr: 4.3858e-04\n",
      "Epoch 56/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 56: 0.029873704663212434\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0075 - val_loss: 0.3886 - lr: 3.9488e-04\n",
      "Epoch 57/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 57: 0.029064119170984455\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0073 - val_loss: 0.3870 - lr: 3.5206e-04\n",
      "Epoch 58/70\n",
      "157/157 [==============================] - 3s 20ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 58: 0.029468911917098446\n",
      "314/314 [==============================] - 64s 203ms/step - loss: 0.0063 - val_loss: 0.3781 - lr: 3.1048e-04\n",
      "Epoch 59/70\n",
      "157/157 [==============================] - 3s 20ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 59: 0.028983160621761657\n",
      "314/314 [==============================] - 64s 204ms/step - loss: 0.0049 - val_loss: 0.4028 - lr: 2.7046e-04\n",
      "Epoch 60/70\n",
      "157/157 [==============================] - 3s 20ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 60: 0.027202072538860103\n",
      "314/314 [==============================] - 64s 204ms/step - loss: 0.0032 - val_loss: 0.3781 - lr: 2.3233e-04\n",
      "Epoch 61/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 61: 0.027849740932642485\n",
      "314/314 [==============================] - 64s 203ms/step - loss: 0.0024 - val_loss: 0.3909 - lr: 1.9640e-04\n",
      "Epoch 62/70\n",
      "157/157 [==============================] - 3s 21ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 62: 0.027444948186528498\n",
      "314/314 [==============================] - 64s 204ms/step - loss: 0.0019 - val_loss: 0.3882 - lr: 1.6295e-04\n",
      "Epoch 63/70\n",
      "157/157 [==============================] - 3s 19ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 63: 0.026716321243523317\n",
      "314/314 [==============================] - 64s 204ms/step - loss: 0.0026 - val_loss: 0.3855 - lr: 1.3225e-04\n",
      "Epoch 64/70\n",
      "157/157 [==============================] - 3s 18ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 64: 0.026716321243523317\n",
      "314/314 [==============================] - 64s 203ms/step - loss: 0.0017 - val_loss: 0.3913 - lr: 1.0456e-04\n",
      "Epoch 65/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 65: 0.026392487046632124\n",
      "314/314 [==============================] - 64s 203ms/step - loss: 0.0013 - val_loss: 0.3932 - lr: 8.0087e-05\n",
      "Epoch 66/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 66: 0.025987694300518133\n",
      "314/314 [==============================] - 64s 202ms/step - loss: 0.0014 - val_loss: 0.3934 - lr: 5.9037e-05\n",
      "Epoch 67/70\n",
      "157/157 [==============================] - 3s 18ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 67: 0.02614961139896373\n",
      "314/314 [==============================] - 64s 203ms/step - loss: 0.0013 - val_loss: 0.3912 - lr: 4.1578e-05\n",
      "Epoch 68/70\n",
      "157/157 [==============================] - 3s 17ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 68: 0.026311528497409326\n",
      "314/314 [==============================] - 64s 204ms/step - loss: 0.0012 - val_loss: 0.3927 - lr: 2.7850e-05\n",
      "Epoch 69/70\n",
      "157/157 [==============================] - 3s 20ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 69: 0.026230569948186528\n",
      "314/314 [==============================] - 64s 204ms/step - loss: 0.0010 - val_loss: 0.3935 - lr: 1.7963e-05\n",
      "Epoch 70/70\n",
      "157/157 [==============================] - 3s 18ms/step\n",
      "\n",
      "Character Error Rate (CER) after epoch 70: 0.025987694300518133\n",
      "314/314 [==============================] - 64s 203ms/step - loss: 0.0011 - val_loss: 0.3937 - lr: 1.1997e-05\n"
     ]
    }
   ],
   "source": [
    "# Train the model with curve\\\n",
    "history = model.fit([X_train, y_train], epochs=total_epochs, validation_data=([X_test, y_test],None),batch_size=128, callbacks=[lr_scheduler, cer])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot the loss curve and CER curve\n",
    "# normlize to 100%\n",
    "cer_plot=[]\n",
    "for value in cer.cer_history:\n",
    "    value = value * 100\n",
    "    cer_plot.append(value)\n",
    "\n",
    "plt.plot(history.history['loss'], label='Training Loss')\n",
    "plt.plot(history.history['val_loss'], label='Validation Loss')\n",
    "plt.plot(cer_plot, label='Character Error Rate (CER)')\n",
    "plt.xlabel('Epochs')\n",
    "plt.ylabel('Loss / CER (%)')\n",
    "plt.title('Loss and CER Curve')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built. `model.compile_metrics` will be empty until you train or evaluate the model.\n"
     ]
    }
   ],
   "source": [
    "model_without_CTC = tf.keras.Model(inputs=model.inputs, outputs=model.layers[-2].output)\n",
    "\n",
    "# Save the model\n",
    "model_without_CTC.save('Res50V2Alpha_without_CTC.h5')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Evaluation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Evaluate the model #Not needed for now\n",
    "# model.evaluate([X_test, y_test])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "157/157 [==============================] - 3s 18ms/step\n"
     ]
    }
   ],
   "source": [
    "# predict \n",
    "y_pred = model.predict([X_val, np.zeros_like(y_val)]) # predict without labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('int64')"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_test.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[15, 99, 99, ..., 99, 99, 99],\n",
       "       [27, 36, 99, ..., 99, 99, 99],\n",
       "       [10, 25, 30, ..., 99, 99, 99],\n",
       "       ...,\n",
       "       [ 7, 99, 99, ..., 99, 99, 99],\n",
       "       [17,  7, 99, ..., 99, 99, 99],\n",
       "       [25, 27, 36, ..., 99, 99, 99]], dtype=int64)"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       ...,\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0]], dtype=int64)"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_test_empty = np.zeros_like(y_test)\n",
    "y_test_empty"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 0, 0, 0, 0], dtype=int64)"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_test_empty[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(5015, 7)"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 500x500 with 9 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot X_test 9 images\n",
    "# plot X_test 9 images\n",
    "plt.figure(figsize=(5,5))\n",
    "for i in range(9):\n",
    "    plt.subplot(5,5,i+1)\n",
    "    plt.imshow(X_test[-i], cmap='gray')\n",
    "    plt.axis('off')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### CER Error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pred_text = decode_batch_predictions(y_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "# devectorize the labels\n",
    "y_val_texts = [devectorize_label(label,vocab_num, padding_token) for label in y_val]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Get the current timestamp\n",
    "timestamp = datetime.datetime.now().strftime(\"%Y%m%d%H%M%S\")\n",
    "\n",
    "# Save y_pred_text as a whole txt file with timestamp\n",
    "with open(f'y_pred_text_{timestamp}.txt', 'w', encoding='utf-8') as f:\n",
    "    for item in y_pred_text:\n",
    "        f.write(\"%s\\n\" % item)\n",
    "\n",
    "# Save y_test_texts as a whole txt file with timestamp\n",
    "with open(f'y_val_texts_{timestamp}.txt', 'w', encoding='utf-8') as f:\n",
    "    for item in y_val_texts:\n",
    "        f.write(\"%s\\n\" % item)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "376 / 12398 = 3.03%\n"
     ]
    }
   ],
   "source": [
    "def calculate_cer(y_true, y_pred):\n",
    "    total_distance = 0\n",
    "    total_true_char = 0\n",
    "    for true_seq, pred_seq in zip(y_true, y_pred):\n",
    "        true_seq = true_seq.rstrip('\\n')\n",
    "        pred_seq = pred_seq.rstrip('\\n')\n",
    "        total_distance += Levenshtein.distance(true_seq, pred_seq)\n",
    "        total_true_char += len(true_seq)\n",
    "    calc=[total_distance, total_true_char]\n",
    "    cer = (total_distance / total_true_char)\n",
    "    return cer, calc\n",
    "\n",
    "cer, calc = calculate_cer(y_val_texts, y_pred_text)\n",
    "print(calc[0],\"/\",calc[1],\"=\",\"{:.2f}%\".format(cer*100))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
